package com.ruoyi.psi.inventory.in.mapper;

import com.ruoyi.psi.base.product.domain.ProduceCheck;
import com.ruoyi.psi.inventory.in.domain.InventoryIn;
import com.ruoyi.psi.inventory.in.domain.InventoryInList;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 其他入库
 * 数据层
 */
public interface InventoryInMapper {

    /**
     * 其他入库查询
     * @param inventoryIn
     * @return
     */
    public List<InventoryIn> selectInventoryInList(InventoryIn inventoryIn);

    /**
     * 按编号查询
     * @param inventoryInId 其他入库编号
     * @return
     */
    public InventoryIn selectInventoryInById(String inventoryInId);
    /**
     * 获取最新的一条其他入库编号
     * @return
     */
    public String getInventoryInId();

    /**
     * 其他入库新增
     * @param inventoryIn
     * @return
     */
    public int insertInventoryIn(InventoryIn inventoryIn);

    /**
     * 其他入库更新
     * @param inventoryIn
     * @return
     */
    public int updateInventoryIn(InventoryIn inventoryIn);

    /**
     * 更新其他入库删除标志位
     * @param inventoryIn
     * @return
     */
    public int updateInventoryInDeleteFlag(InventoryIn inventoryIn);

    /**
     * 其他入库详细查询
     * @param inventoryInList
     * @return
     */
    public List<InventoryInList> selectInventoryInListList(InventoryInList inventoryInList);

    /**
     * 查询其他入库对应的所有产品详细
     * @param inventoryInId 其他入库编号
     * @return
     */
    public List<InventoryInList>  selectInventoryInListListById(String inventoryInId);

    /**
     * 查询其他入库对应的指定产品详细
     * @param inventoryInId
     * @return
     */
    public InventoryInList  selectInventoryInListById(@Param("inventoryInId")String inventoryInId, @Param("produceId")String produceId);

    /**
     * 其他入库详细新增
     * @param inventoryInList
     * @return
     */
    public int insertInventoryInList(InventoryInList inventoryInList);

    /**
     * 其他入库详细更新
     * @param inventoryInList
     * @return
     */
    public int updateInventoryInList(InventoryInList inventoryInList);

    /**
     * 删除其他入库详细
     * @param inventoryInId  其他入库编号
     * @param produceId 产品编号
     * @return
     */
    public int deleteInventoryInListById(@Param("inventoryInId")String inventoryInId, @Param("produceId")String produceId);

    /**
     * 获取指定产品其他入库数量
     * @param produceCheck
     * @return
     */
    public Double getInventoryInProduceNum(ProduceCheck produceCheck);
}
